#!/bin/bash

DADOS=`zenity --forms --title="PFCII - Firewall" \
--text="Informe os dados abaixo para criar um Túnel SSH." \
--separator=" " \
--add-entry="Usuário:" \
--add-entry="Endereço servidor:" \
--add-entry="Porta servidor SSH (22):" `

#   Extrai os dados para ser utilizados no login
#   do servidor remoto
set -- $DADOS

if [ "$#" -lt 3 ]; then
    `zenity --error --text="Informe usuário, endereço do servidor firewall\n
     e porta do servidor ssh para prosseguir."`
    exit
fi

#   Atribui a senha do usuário a variavel de ambiente SSHPASS
#   Facilitando a processo de login utilizando o comando sshpass

#   Abre um tunel com o servidor remoto
#   as opções aqui utilizadas permite a utilização do protocolo SSH2
#   abrir o túnel em background, redireciona stdin para /dev/null
#   e não permite o envio de comandos via prompt


SSH_USER="$1"
SSH_ENDERECO="$2"
SSH_PORTA_SSH="$3"

ssh -M -S servidorfw -2fnNT -L 5000:localhost:20000 "$SSH_USER@$SSH_ENDERECO" "-p $SSH_PORTA_SSH"


#   Este comando server para verificar se o tunel foi criado
#   O retorno do comando ps será algo do tipo:
#         PID TTY          TIME CMD
#       27132 ?        00:00:00 ssh
#
#   A junção com grep "ssh" permitirá encontra mais
#   fácilmente o PID do processo uma ver que este retornará:
#       27132 ?        00:00:00 ssh
#
#   set -- $PS transforma "quebra" os valores em argumentos
#   desta forma o PID do processo ficará na segunda posição "$1"

PS=`ps -C "ssh -M -S servidorfw -fnNT -L 5000:localhost:20000" | grep "ssh"`

set -- $PS

if [ -n "$1" ]; then
    @prefix@/bin/main

    ssh -S servidorfw -O exit "$SSH_USER@$SSH_PASSWORD"
else
    `zenity --error --text="Falha ao criar o tunel SSH."`
fi

